using JT808Protocol.Common;
using System;
using System.Collections.Generic;
using System.Text.Json.Serialization;

namespace JT808Protocol.Models.BodyParserStrategy
{
    /// <summary>
    /// 文件上传完成消息
    /// 消息Id：0x1212
    /// 报文类型：信令数据报文
    /// </summary>
    public class DrFileUploadFinished_0x1212 : IJT808Body
    {
        /// <summary>
        /// 文件名称长度
        /// </summary>
        [JsonPropertyName("文件名称长度")] public byte Length { get; set; }

        /// <summary>
        /// 文件名称
        /// </summary>
        [JsonPropertyName("文件名称")] public string Name { get; set; }

        /// <summary>
        /// 文件类型
        /// 0x00：图片 0x01：音频 0x02：视频 0x03：文本 0x04：其它
        /// </summary>
        [JsonPropertyName("文件类型")] public byte Type { get; set; }

        /// <summary>
        /// 文件大小
        /// 当前上传文件的大小。
        /// </summary>
        [JsonPropertyName("文件大小")] public uint Size { get; set; }

        public override IJT808Body ReadBody(ReadOnlySpan<byte> source, ref int startIndex)
        {
            Length = source[startIndex];
            Name = ParseHelper.Gb2312String(ref source, startIndex + 1, Length);
            Type = source[startIndex + Length + 1];
            Size = ParseHelper.Uint32(ref source, startIndex + Length + 2);

            return this;
        }

        public override List<byte> WriteToBytes()
        {
            throw new NotImplementedException();
        }
    }
}